package com.topgay.service;

import java.util.List;

import com.topgay.domain.CSCenter;
import com.topgay.domain.Declaration;

public interface CSCenterService {

	/**
	 * 페이징 처리 목록 조회 메소드.
	 * 조회한 게시물들(ArrayList)와 페이징 처리를 위한 PagingBean의 객체를 생성해 Map에 넣어 return 처리한다.
	 * @param page
	 * @param divide
	 * @return
	 */
	public abstract List<CSCenter> getCSCenterList(int page, int divide);
	
	/**
	 * 전체 게시물 수 조회
	 * @param divide
	 * @return
	 */
	public abstract int getTotalContent(int divide);
	
	/**
	 * CSCenter - 글쓰기 입력 처리 메소드
	 * @param cscenter
	 */
	public abstract void setWriteContent(CSCenter cscenter);
	
	/**
	 * CSCenter - 한개의 글(게시물)을 조회하는 메소드
	 * ViewCount 증가
	 * @param cscenterNo int - 글 번호
	 */
	public abstract CSCenter getCSCenterContentByNo(int cscenterNo);
	
	/**
	 * CSCenter - 한개의 글(게시물)을 조회하는 메소드
	 * ViewCount 증가 안함
	 * @param cscenterNo int - 글 번호
	 */
	public abstract CSCenter getCSCenterContentByNoNotViewCount(int cscenterNo);
	
	/**
	 * CSCenter - 수정폼을 위해 한개의 글(게시물)을 조회하는 메소드
	 * 				- getCSCenterContentByNo() 와 비교해 조회수 증가를 시키지 않는다.
	 * @param cscenterNo
	 * @return
	 */
	public abstract CSCenter getContentByNoForForm(int cscenterNo);
	
	/**
	 * CSCenter - 게시물을 수정 처리하는 메소드
	 * @param cscenter
	 */
	public abstract void modifyContent(CSCenter cscenter);
	
	/**
	 * CSCenter - 한개의 게시물을 삭제 처리하는 메소드
	 * @param cscenterNo
	 */
	public abstract void deleteContentByNo(int cscenterNo);
	
	
	/**
	 * 신고하기 - 전체 게시물 수 조회
	 * @param divide
	 * @return
	 */
	public abstract int getDeclarationTotalContent();
	
	/**
	 * 신고하기 - 한개의 신고 글을 입력 처리 메소드
	 * @param declaration
	 */
	public abstract void setWriteDeclarationContent(Declaration declaration);
	
	/**
	 * 신고하기 - 신고 글 목록 조회
	 * @param page
	 * @return
	 */
	public abstract List<Declaration> getDeclarationList(int page); 
	
	/**
	 * 신고하기 - 가해자 id로 신고 글 목록 조회
	 * @param page
	 * @param assaulterId
	 */
	public abstract List<Declaration> getDeclarationListByAssaulterId(int page, String assaulterId);
	
	/**
	 * 신고하기 - 가해자 별명으로 신고 글 목록 조회
	 * @param page
	 * @param assaulterNickname
	 * @return
	 */
	public abstract List<Declaration> getDeclarationListByAssaulterNickname(int page, String assaulterNickname);
	
	/**
	 * 신고하기 - 피해자 id로 신고 글 목록 조회
	 * @param page
	 * @param assaulterId
	 */
	public abstract List<Declaration> getDeclarationListById(int page, String id);
	
	/**
	 * 신고하기 - 한개의 신고 글을 상세 조회
	 * @param declarationNo
	 */
	public abstract Declaration getDeclarationContentByNo(int declarationNo);
	
	/**
	 * 신고하기 - 한개의 신고 글을 처리 결과 수정
	 * @param declarationNo - 글번호
	 * @param result -(NULL):미처리 / 0:신고안함 / 1:신고함
	 */
	public abstract void modifyDeclarationForResult(int declarationNo, String result);
	
	/**
	 * 신고하기 - 한개의 신고 글을 삭제
	 * @param declarationNo
	 */
	public abstract void deleteDeclarationContentByNo(int declarationNo);
	
}